const vscode = require('vscode');
const path = require('path');
const core = require('./core')
const statusbarItemService = require('./statusBarItemService')
const { exec } = require('child_process');

let projectFiles = []
let scriptFiles = []
let pageFiles = []
let applicationInfo = {
	'name': 'demo',  // 默认名
	'description': ''
}

function activate(context) {

	console.log('extension "vue2blue-plugin" is now active!');

	// 启动python服务器
	// console.log(process.platform)
	// console.log(context.extensionPath)
	// exec('python ./main.py', (error, stdout, stderr) => {
	// 	if (error) {
	// 		console.error(`exec error: ${error}`);
	// 		return;
	// 	}
	// 	console.log(`stdout: ${stdout}`);
	// 	console.error(`stderr: ${stderr}`);
	// });

	context.subscriptions.push(statusbarItemService.statusbarItem)

	// vscode.commands.executeCommand('extension.setCustomizableFeatures', {
	// 	name: 'Vue2Blue', // 插件名称
	// 	icon: '', // 插件icon，可以是本地路径或者网络图片，没有则显示 BlueOS Studio 默认的 icon 图标
	// 	commandList: [
	// 	  {
	// 		// 命令数组，当前版本仅支持一个插件发送一个命令
	// 		name: 'vue2blue-plugin.init', // 命令名，需要执行的命令
	// 		description: '', // 描述，命令功能名
	// 		parameters: {}, // 命令参数，可传入一个对象Object
	// 	  },
	// 	],
	//   })

	context.subscriptions.push(
			vscode.commands.registerCommand('vue2blue-plugin.test', () => {
			core.printErrorFeedback()
		})
	)
	
	context.subscriptions.push(vscode.commands.registerCommand('vue2blue-plugin.init', () => {
		vscode.window.showInformationMessage('init blueos project !');
		// 根文件夹
		let folder = vscode.workspace.workspaceFolders[0];
		// 忽略文件
		let exclude_patterns = [
			'**/node_modules/**',
			'**/build/**',
			'dist/**',
			".vue2blue"
		]
		// 将代码/配置备份
		if (folder) {
			vscode.workspace.findFiles(include = '**/*', exclude = `{${exclude_patterns.join(",")}}`)
			.then(files => {
				core.backAndInitProject(files)
			})
		} else {
			vscode.window.showInformationMessage('没有打开的项目')
		}

	}))

	// 转换命令
	context.subscriptions.push(vscode.commands.registerCommand('vue2blue-plugin.start', () => {
		let uxFiles = []
		vscode.window.showInformationMessage('start convert !');
		// 根文件夹
		let folder = vscode.workspace.workspaceFolders[0];
		// 忽略文件
		let exclude_patterns = [
			'**/node_modules/**',
			'**/build/**',
			'dist/**',
			'public/**',
			'.gitignore',
			'vue.config.js',
			'package-lock.json',
			'babel.config.js',
			'jsconfig.json',
			".vue2blue"
		]
		if (folder) {
			// 获得当前文件夹名作为项目名
			applicationInfo.name = folder.name
			// 遍历项目中的文件
			vscode.workspace.findFiles(include = '**/*', exclude = `{${exclude_patterns.join(",")}}`)
			.then(files => {
				for (let file of files) {
					// let filename = path.basename(file.path)
					if (file.path.includes("pages") && file.path.endsWith('.ux')) {
						// 记录ux文件
						uxFiles.push(file)
					} else {
						// 除vue外的文件
					}
				}
				core.appendLogLine('项目文件遍历完成, 开始转换')
				// vue页面转blue页面
				core.vue2Blue(uxFiles, context)
			})
		} else {
			vscode.window.showInformationMessage('没有打开的项目')
		}
	}))


}

function deactivate() {}

module.exports = {
	activate,
	deactivate
}
